package optimizacion;

public class CromosomaFuncion2 extends Cromosoma{
    
	final double min = -6;
	final double max = 6;
	
    public CromosomaFuncion2(int numGenes, double tolerancia){
    	super(numGenes, tolerancia);
    	this.numGenes = numGenes;
    	this.tolerancia = tolerancia;
        crearGenes(min, max);
        calcularLongitud();
    }
    
    public CromosomaFuncion2(){
    	super();
    }
    
    @Override
    public double calcularAptitud() {   
    	aptitud =  Funciones.f2(calcularFenotipoIesimo(min, max, 0), calcularFenotipoIesimo(min, max, 1));
    	aptitudRev = aptitud;
    	aptitudEscaladoLineal = aptitud;   	
    	return aptitud;
    }
    
    public double revisarAptitud(double cmax) {
    	aptitudRev = aptitud;
    	aptitudEscaladoLineal = aptitud;
    	return aptitud;
    }    
    
    public CromosomaFuncion2 clone (){
    	CromosomaFuncion2 crom = new CromosomaFuncion2();

    	crom.numGenes = numGenes;
    	crom.longitud = longitud;
    	crom.aptitud = aptitud;
    	crom.aptitudRev = aptitudRev;
    	crom.aptitudEscaladoLineal = aptitudEscaladoLineal;
    	crom.puntuacion = puntuacion;
    	crom.puntuacionAcumulada = puntuacionAcumulada;
    	crom.tolerancia = tolerancia;
    	
    	crom.genes = new GenBinario[longitud];
    	
    	for (int i = 0; i < numGenes; i++)
    		crom.genes[i] = genes[i].clone();    	
    	
    	return crom;
    }
	
    
}
